/**
 * 授权综合逻辑
 * @param {*} scope 权限代表
 */

// ========================= 用法 =========================
// import { useShowPullAuth } from '@/composable'
// import { onLoad } from '@dcloudio/uni-app'
// onLoad(() => {
//   console.log('onLoad')
//   pullAuth('scope.camera')
// })
// ========================================================

export const useShowPullAuth = () => {
  const pullAuth = (scope) => {
    const map = {
      'scope.userInfo': '用户信息',
      'scope.userLocation': '地理位置',
      'scope.userLocationBackground': '后台定位',
      'scope.address': '通信地址',
      'scope.record': '录音功能',
      'scope.writePhotosAlbum': '保存到相册',
      'scope.camera': '摄像头',
      'scope.invoice': '获取发票',
      'scope.invoiceTitle': '发票抬头',
      'scope.werun': '微信运动步数'
    };

    uni.getSetting({
      success () {
        // scope 存在
        if (map[scope]) {
          // 提前向用户发起授权请求
          uni.authorize({
            scope,
            fail () {
              const word = map[scope];
              uni.showModal({
                content: `检测到您没打开${word}权限，是否去设置打开？`,
                confirmText: '确认',
                cancelText: '取消',
                success: (res) => {
                  if (res.confirm) {
                    // 打开授权页
                    uni.openSetting({
                      success: (res) => {
                        if (res.authSetting[scope]) {
                          uni.showToast({
                            title: '授权成功',
                            icon: 'none'
                          });
                        } else {
                          uni.showToast({
                            title: '未授权，将会影响使用小程序部分功能，可自行去右上角（...）中-设置手动打开！',
                            icon: 'none'
                          });
                        }
                      }
                    });
                  } else {
                    uni.showToast({
                      title: '未授权，将会影响使用小程序部分功能，可自行去右上角（...）中-设置手动打开！',
                      icon: 'none',
                      duration: 2500
                    });
                  }
                }
              });
            }
          });
        } else {
          // 不存在授权 scope
          uni.showToast({
            title: '无此授权功能',
            icon: 'none'
          });
        }
      }
    });
  };
  return { pullAuth };
};
